#include<cstdio>//B
#include<cmath>

template<class T>void read(T &x)
{
	x=0;int f=0;char ch=getchar();
	while(ch<'0'||ch>'9') { f|=(ch=='-'); ch=getchar(); }
	while(ch<='9'&&ch>='0') { x=(x<<1)+(x<<3)+(ch^48); ch=getchar(); }
	x = f ? -x : x;
	return ;
}

bool is_prime(int x)
{
	for(int i=2;i<=sqrt(x);++i)
	{
		if(x%i==0)
			return false;
	}
	return true;
}

bool visit[30];
int ans[30];
int n;

void init()
{
	for(int i=1;i<=n;++i)
		visit[i]=false;
	for(int i=1;i<=n;++i)
		ans[i]=0;
	return ;
}

void output()
{
	for(int i=1;i<n;++i)
		printf("%d ",ans[i]);
	printf("%d",ans[n]);
	printf("\n");
}

void DFS(int x)
{
	if(x==n)
	{
		for(int i=1;i<=n;++i)
		{
			if(visit[i]==false)
			{
				if(is_prime(ans[x-1]+i)&&is_prime(ans[1]+i))
				{
					ans[x]=i;
					output();
					return ;
				}
			}
		}
		return ;
	}

	for(int i=1;i<=n;++i)
	{
		if(visit[i]==false)
		{
			if(is_prime(ans[x-1]+i))
			{
				visit[i]=true;
				ans[x]=i;
				DFS(x+1);
				visit[i]=false;
			}
		}
	}
	return ;
}

int main()
{
	int tot=0;
	while(~scanf("%d",&n))
	{
		tot=tot+1;
		init();
		printf("Case %d:\n",tot);
		ans[1]=1;visit[1]=true;
		DFS(2);
		printf("\n");
	}
	return 0;
}
